package com.anyou.mall.order.domain;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

import com.anyou.mall.dri.domain.Driver;
import com.anyou.mall.goo.goods.domain.GooGoods;
import com.anyou.mall.goo.goods.domain.GooGoodsVo;
import com.anyou.mall.order.orderGoods.domain.OrdOrderGoods;

import com.anyou.mall.order.vo.OrderUseVo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.EqualsAndHashCode;
import com.anyou.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.anyou.common.core.domain.BaseEntity;

/**
 * 订单对象 ord_order
 *
 * @author ruoyi
 * @date 2022-03-21
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(callSuper=false)
@ApiModel(value = "订单")
@TableName(value = "ord_order")
public class OrdOrder extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 订单编号 */
    @TableId(type = IdType.AUTO)
    @ApiModelProperty("订单编号")
    private Long orderId;

    /** 用户编号 */
    @ApiModelProperty("用户编号")
    private Long userId;


    /** 商家编号 */
    @ApiModelProperty("商家编号")
    @Excel(name = "商家编号")
    private Long storeId;


    /** 汽配商编号 */
    @ApiModelProperty("汽配商编号")
    @Excel(name = "汽配商编号")
    private Long carPartsShopId;

    /** 订单号 */
    @ApiModelProperty("订单号")
    @Excel(name = "订单号")
    private String orderNo;

    /** 商品数量 */
    @ApiModelProperty("商品数量")
    @Excel(name = "商品数量")
    private Integer goodsNumber;

    /** 支付方式（1微信） */
    @ApiModelProperty("支付方式（1微信）")
    @Excel(name = "支付方式", readConverterExp = "1=微信")
    private String payMode;

    /** 是否支付（0否，1是） */
    @ApiModelProperty("是否支付（0否，1是）")
    private String isPay;

    /** 支付时间 */
    @ApiModelProperty("支付时间")
    private Date payTime;


    @ApiModelProperty("订单状态：1-待付款，2-待配送，3-待收货，4-已完成，5-已取消")
    @Excel(name = "订单状态", readConverterExp = "1=待付款,2=待配送,3=待收货,4=已完成,5=已取消")
    private String orderStatus;

    /** 订单金额 */
    @ApiModelProperty("订单金额")
    @Excel(name = "订单金额")
    private BigDecimal orderAmount;

    /** 商品金额 */
    @ApiModelProperty("商品金额")
    private BigDecimal goodsAmount;

    /** 优惠金额 */
    @ApiModelProperty("优惠金额")
    private BigDecimal discountAmount;

    /** 是否购买延迟保险（0否，1是） */
    @ApiModelProperty("是否购买延迟保险（0否，1是）")
    private String isPayInsure;

    /** 延迟保险金额 */
    @ApiModelProperty("延迟保险金额")
    private BigDecimal insureAmount;

    /** 是否免运费（0否，1是） */
    @ApiModelProperty("是否免运费（0否，1是）")
    private String isFreeFreight;

    /** 运费金额 */
    @ApiModelProperty("运费金额")
    private BigDecimal freightAmount;

    /** 加急费用 */
    @ApiModelProperty("加急费用")
    private BigDecimal urgentAmount;

    /** 收货类型（1配送到家，2到店领取） */
    @ApiModelProperty("收货类型（1配送到家，2到店领取）")
    @Excel(name = "收货类型", readConverterExp = "1=配送到家，2到店领取")
    private String receivingType;

    /** 配送方式（1安邮配送，2商家配，3物流） */
    @ApiModelProperty("配送方式（1安邮配送，2商家配送，3物流）")
    @Excel(name = "配送方式", readConverterExp = "1=安邮配送，2商家配送，3物流")
    private String deliveryMode;

    /** 发货类型（1物流，2配送） */
    @ApiModelProperty("发货类型（1物流，2配送）")
    private String deliverType;

    /** 发货时间 */
    @ApiModelProperty("发货时间")
    private Date deliverTime;



    /** 联系人姓名 */
    @ApiModelProperty("联系人姓名")
    private String contactName;

    /** 联系人电话 */
    @ApiModelProperty("联系人电话")
    private String contactPhone;

    /** 收货人 */
    @ApiModelProperty("收货人")
    private String receiverName;

    /** 收货电话 */
    @ApiModelProperty("收货电话")
    @Excel(name = "收货电话")
    private String receiverPhone;

    /** 收货省 */
    @ApiModelProperty("收货省")
    private String receiverProvince;

    /** 收货市 */
    @ApiModelProperty("收货市")
    private String receiverCity;

    /** 收货区 */
    @ApiModelProperty("收货区")
    private String receiverArea;

    @ApiModelProperty("收货街道")
    private String receiverStreet;

    /** 收货详细地址 */
    @ApiModelProperty("收货详细地址")
    private String receiverDetailed;

    /** 是否加急配送（0否，1是） */
    @ApiModelProperty("是否加急配送（0否，1是）")
    private String isUrgentDelivery;


    @ApiModelProperty("配送状态：1-待分配司机 ，2-待出库，3-配送中，4-已完成")
    private Integer distributionStatus;

    /** 完成时间 */
    @ApiModelProperty("完成时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date completeTime;

    @ApiModelProperty("派单时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date assignTime;


    /** 取消时间 */
    @ApiModelProperty("取消时间")
    private Date cancelTime;

    /** 创建时间 */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 是否已评价（0否，1是） */
    @ApiModelProperty("是否已评价（0否，1是）")
    private String isEvaluate;

    /** 删除标志（0代表存在 2代表删除） */
    @ApiModelProperty("删除标志（0代表存在 2代表删除）")
    private String delFlag;

    @ApiModelProperty("配送时间")
    private String deliveryTime;



    /** 商家地址 */
    @ApiModelProperty("商家地址")
    @TableField(exist = false)
    private String shopAddress;

    /** 配送员司机id */
    @ApiModelProperty("配送员司机id")
    private Long deliveryUserId;

    /** 揽件员司机id */
    @ApiModelProperty("揽件员司机id")
    private Long collectUserId;




    /** 用户手机号 */
    @ApiModelProperty("用户手机号")
    @TableField(exist=false)
    private String phoneNumber;

    /**
     * 揽件时间
     */
    @ApiModelProperty("揽件时间")
    private Date collectTime;
    /**
     * 入库时间
     */
    @ApiModelProperty("入库时间")
    private Date inboundTime;
    /**
     * 出库时间
     */
    @ApiModelProperty("出库时间")
    private Date outboundTime;
    /**
     * 客户签收时间
     */
    @ApiModelProperty("客户签收时间")
    private Date signTime;


    /**
     * 揽件凭证图片
     */
    @ApiModelProperty("揽件凭证图片")
    private String collectImg;
    /**
     * 出库凭证图片
     */
    @ApiModelProperty("出库凭证图片")
    private String outboundImg;
    /**
     * 客户签收凭证图片
     */
    @ApiModelProperty("客户签收凭证图片")
    private String signImg;




    /**
     * 支付订单号
     */
    @ApiModelProperty("支付订单号")
    private String orderPayNo;
    /**
     * 订单类型
     */
    @ApiModelProperty("订单类型（0普通订单，1水票订单,2补给订单）")
    private Integer  orderType;




    @ApiModelProperty("是否为积分订单（0-否，1-是）")
    private Integer isJf;

    @ApiModelProperty("积分商品ID")
    private Long jfGoodsId;

    @ApiModelProperty("补给主单ID")
    private Long supplyId;
    @ApiModelProperty("补给时间ID")
    private Long supplyTimeId;
    @ApiModelProperty("赠送积分数量")
    private Integer sendJf;
    @ApiModelProperty("水票抵扣金额")
    private BigDecimal waterTicketMoney;

    @ApiModelProperty("桶押金金额")
    private BigDecimal  bucketMoney;

    @ApiModelProperty("地点类型（  3=楼梯 4.电梯 5.街铺）")
    private Integer  deliveryPriceType;


    @ApiModelProperty("积分商品类型（0-实体商品，1-虚拟商品）")
    @TableField(exist = false)
    private String jfType;

    @ApiModelProperty("积分订单商品列表")
    @TableField(exist = false)
    private GooGoodsVo goods;


    @ApiModelProperty("所属合伙人")
    @TableField(exist = false)
    private String partner;

    /** 订单商品列表 */
    @ApiModelProperty("订单商品列表")
    @TableField(exist = false)
    private List<OrdOrderGoods> orderGoodsList;

    @ApiModelProperty("购水用途列表")
    @TableField(exist = false)
    private String orderUseList;

    @ApiModelProperty("配送司机姓名")
    @TableField(exist = false)
    private String driverName;
    @ApiModelProperty("司机手机号")
    @TableField(exist = false)
    private String driverPhone;
    @ApiModelProperty("配送车型")
    @TableField(exist = false)
    private String driverCar;
    @ApiModelProperty("用户姓名")
    @TableField(exist = false)
    private String nickName;
    @ApiModelProperty("水票规格")
    @TableField(exist = false)
    private String waterSpec;

    @ApiModelProperty("物流名称")
    private String logisticsId;
    @ApiModelProperty("物流单号")
    private String logisticsNo;
}
